<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>


        /* 
            多个异步操作嵌套

             let p1 = new Promise(function(resolve,rejct){
                异步1 -成功调用resove 失败调用reject
             })
             p1.then(function(){
                let p2 = new Promsie(function(resolve,rejct){
                    异步2--成功调用resove 失败调用reject
                })；
                return p2
             }).then(function(){
                //p2成功以后 就会执行
                let p3 = new Promsie(function(resolve,rejct){
                    异步3--成功调用resove 失败调用reject
                })；
                return p3
             }).then(function(){
                //p3成功以后 就会执行

             }).catch(function(){
                任意一个失败 就执行 catch
             })
        */

        let username = 'zhangsan' + parseInt(Math.random() * 100000)
        let password = '123456'
        let regAPI = 'http://jx.xuzhixiang.top/ap/api/reg.php' + `?username=${username}&password=${password}`
        let loginAPI = 'http://jx.xuzhixiang.top/ap/api/login.php' + `?username=${username}&password=${password}`
        //    let arr = []
        //    arr.forEach(function(v,i){})
        let p = new Promise(function (resolve, reject) {
            console.log(11);
            console.log(222);
            let xhr = new XMLHttpRequest()
            xhr.open('get', regAPI)
            xhr.send()
            xhr.onload = function () {
                // 异步的
                if (xhr.status == 200) {
                    let obj = JSON.parse(xhr.responseText);
                    // 异步操作成功--
                    console.log(obj);
                    // resolve 理解 为 就是下面的 then里面的第一个函数
                    resolve(obj)
                    // reject()
                    console.log(p);//fulfilled
                }
            }
            xhr.onerror = function () {
                // rejct 理解 为 就是下面的 then里面的第二个函数
                reject()
            }
        });
        console.log(p);


        // p.then(function (res) {
        //     console.log('promsie对象里面的异步操作成功以后执行');
        //     console.log(res);
        //     // 发起第二个异步操作
        // }, function () {
        //     console.log('promsie对象里面的异步操作失败以后执行');
        // })

        // 链式调用  
        // p.then(function (res) {
        //     console.log('promsie对象里面的异步操作成功以后执行');
        //     console.log(res);
        // }).catch(function () {
        //     console.log('promsie对象里面的异步操作失败以后执行');

        // }).finally(function () {
        //     console.log('不管成功失败 都会执行');
        // })

        p.then(function (res) {
            console.log('promsie对象里面的异步操作成功以后执行');
            console.log(res);

        })
        p.catch(function () {
            console.log('promsie对象里面的异步操作失败以后执行');

        })
        p.finally(function () {
            console.log('不管成功失败 都会执行');
        })
    </script>

</body>

</html>